/* 1) Create an instance of CSInterface. */
var gExtensionID = "com.mid.bsize";
var cs = new CSInterface();

// var openButton = document.querySelector("#open-button");
// openButton.addEventListener("click", setCurrentBrushSize);
//
function setBrushSize(size) {

    cs.evalScript("setCurrentBrushSize(" + size + ")");
}

//
// var bt2 = document.querySelector("#bt2");
// bt2.addEventListener("click", function () {
//     cs.evalScript("alert('r=>' + getBackgroundColor().rgb.red)");
// });

cs.evalScript("loadLib()");

function onLoaded() {
    try {

        if (!$._ext) {
            $._ext = {};
        }
        $._ext.sizes = [3];
        $._ext.rate = 1;
        $._ext.brushSize = null;
        $._ext.setting = [false];
        $._ext.lastDiameter = null;
        $._ext.getBrushCb = null;

        // 重新打开plugin标签时，不重刷脚本
        Persistent(false);

        themeManager.init();

        SetupEvent();

        // 刷新当前画笔大小到第一个btn
        SetCurBrushSizeToBtn(0);
        $._ext.brushSize = $._ext.sizes[0];
        $._ext.lastDiameter = $._ext.btnBrushSize;

        RefreshUI();

        // $("#bt-sub").on("click", function () {
        //     if ($._ext.rate > 1) {
        //         $._ext.rate--;
        //     }
        //     RefreshUI();
        // });
        // $("#bt-add").on("click", function () {
        //     if ($._ext.rate < 10) {
        //         $._ext.rate++;
        //     }
        //     RefreshUI();
        // });

    } catch (e) {
        alert("onLoaded catch: " + e);
    }
}

function SetupEvent() {
    for (let i = 0; i < $._ext.sizes.length; i++) {
        let bt = $(`#bt${i}`);
        // $(`#bt${i}`).text(s * $._ext.rate);
        bt.on('mousedown', function () {
            $._ext.setting[i] = true;
        });
        // bt.on('mouseout', function () {
        bt.on('mouseup', function () {
            if ($._ext.setting[i]) {
                SetCurBrushSizeToBtn(i);
            }
            $._ext.setting[i] = false;
        })
        // bt.on('mouseup', function () {
        //     $._ext.brushSize = $._ext.sizes[i];
        //     setBrushSize($._ext.btnBrushSize);
        // })
    }


    // bt = $('#key0')
    // bt.on('mouseup', function () {
    //
    //     var eventObject = document.createEvent('KeyboardEvent');
    //     eventObject.initKeyboardEvent("keydown", false, true, document.defaultView, 65, 0, "");
    //     document.dispatchEvent(eventObject);
    //     alert("key0")
    // })

    cs.addEventListener("com.mid.event.getBrushInfo", function (event) {
        $._ext.getBrushCb(event);
    });

// 外部快捷脚本，设置笔刷大小
    cs.addEventListener("com.mid.event.select", function (event) {
        let selIdx = parseInt(event.data);
        // note: 如果当前画笔大小==上次设定的大小，那么就设置画笔大小->上次设定之前的画笔大小
        $._ext.getBrushCb = function (ev) {
            let sz = parseFloat(ev.data).toFixed(0);
            if (sz === $._ext.btnBrushSize) {
                setBrushSize($._ext.savedDiameter);
            } else {
                $._ext.savedDiameter = sz;
                $._ext.btnBrushSize = $._ext.sizes[selIdx];
                setBrushSize($._ext.btnBrushSize);
            }
        }
        cs.evalScript("api_getBrushInfo()");
    });

    // var event = new CSEvent();
    // event.type = "com.adobe.PhotoshopRegisterEvent";
    // event.scope = "APPLICATION";
    // event.data = "1349415968, 1148352834";
    // // cs.dispatchEvent(event);
    // cs.addEventListener(
    //     "PhotoshopCallback",
    //     function(e) {
    //         alert("event: " + e.data);
    //     }
    // );
    // alert("color: " + app.foregroundColor);
}

// function GetCurBrushSize(cb) {
//     let csInterface = new CSInterface();
//     csInterface.addEventListener("com.mid.event.getBrushInfo", function (event) {
//         cb(parseFloat(event.data).toFixed(0));
//         csInterface.removeEventListener("com.mid.event.getBrushInfo");
//     });
//     csInterface.evalScript("api_getBrushInfo()");
// }

function SetCurBrushSizeToBtn(i) {
    // alert("1");
    // let csInterface = new CSInterface();
    // csInterface.addEventListener("com.mid.event.getBrushInfo", function (event) {
    //     // alert(JSON.stringify(event.data));
    //     // let dl = event.data.split(":");
    //     // let index = parseInt(dl[0]);
    //     // let diameter = parseFloat(dl[1]);
    //     // $._ext.sizes[index] = diameter.toFixed(0);
    //     $._ext.sizes[i] = parseFloat(event.data).toFixed(0);
    //     RefreshUI();
    // });
    // csInterface.evalScript("api_getBrushInfo()");

    // GetCurBrushSize(function (sz) {
    //     $._ext.sizes[i] = sz;
    //     RefreshUI();
    // })

    $._ext.getBrushCb = function (event) {
        // alert(event.data);
        $._ext.sizes[i] = parseFloat(event.data).toFixed(0);
        RefreshUI();
    }
    cs.evalScript("api_getBrushInfo()");
}

function RefreshUI() {
    for (let i = 0; i < $._ext.sizes.length; i++) {
        let s = $._ext.sizes[i];
        $(`#bt${i}`).text(s);
    }
}

// 反复打开不刷新script，开发时设置false。
function Persistent(inOn) {
    gStartDate = new Date();
    var event;
    if (inOn) {
        event = new CSEvent("com.adobe.PhotoshopPersistent", "APPLICATION");
    } else {
        event = new CSEvent("com.adobe.PhotoshopUnPersistent", "APPLICATION");
    }
    event.extensionId = gExtensionID;
    cs.dispatchEvent(event);
}
